package com.fido.kingkongview.view

/**
 * @author: FiDo
 * @date: 2024/7/29
 * @des:  用于自定义手指触摸后 item的加速度
 */
import android.content.Context
import android.util.AttributeSet
import androidx.recyclerview.widget.RecyclerView

class KingKongFlingRecyclerView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyle: Int = 0
) : RecyclerView(context, attrs, defStyle) {

    private var flingCoefficient = 4.0  // 0.5 表示减半速度，2.0 表示加倍速度

    var normalFling = false    // true 时改为正常速度

    /**
     * @param flingVelocity 0.5 表示减半速度，2.0 表示加倍速度
     */
    fun setFlingVelocity(flingVelocity:Double){
        normalFling = false
        this.flingCoefficient = flingVelocity
    }

    override fun fling(velocityX: Int, velocityY: Int): Boolean {
        if (normalFling) {
            return super.fling(velocityX, velocityY)
        }
        // 调整fling的速度
        val newVelocityX = adjustFlingVelocity(velocityX)
        val newVelocityY = adjustFlingVelocity(velocityY)
        return super.fling(newVelocityX, newVelocityY)
    }

    private fun adjustFlingVelocity(velocity: Int): Int {
        // 调整这个系数来控制fling速度
        return (velocity * flingCoefficient).toInt()
    }
}
